# 代码结果：
    # ConcreteProductA: 执行操作
    # ConcreteProductB: 执行操作

from abc import ABC, abstractmethod

# 定义产品接口
class Product(ABC):
    @abstractmethod
    def operation(self):
        pass

# 具体产品 A
class ConcreteProductA(Product):
    def operation(self):
        print("ConcreteProductA: 执行操作")

# 具体产品 B
class ConcreteProductB(Product):
    def operation(self):
        print("ConcreteProductB: 执行操作")

# 工厂类
class Factory:
    @staticmethod
    def create_product_a() -> Product:
        return ConcreteProductA()

    @staticmethod
    def create_product_b() -> Product:
        return ConcreteProductB()

# 客户端代码
if __name__ == "__main__":
    # 通过工厂创建产品 A
    product_a = Factory.create_product_a()
    product_a.operation()

    # 通过工厂创建产品 B
    product_b = Factory.create_product_b()
    product_b.operation()